package models_main

import (
	"fmt"
	"longmen/server/pkg/db/mysql/models"
	"time"
)

type User struct {
	Id              int        `json:"id" gorm:"primaryKey;autoIncrement"`
	Token           string     `json:"token"`                              //varchar(255) DEFAULT NULL,
	TokenWeb        string     `json:"token_web" gorm:"type:varchar(255)"` //varchar(255) DEFAULT NULL,
	NickName        string     `json:"nick_name"`                          //varchar(255) DEFAULT NULL,
	Account         string     `json:"account" gorm:"type:varchar(255)"`   //varchar(255) DEFAULT '',
	Password        string     `json:"password"`                           //varchar(255) DEFAULT NULL,
	Mobile          string     `json:"mobile"`
	WxUnionid       string     `json:"-"`                 //varchar(255) DEFAULT NULL COMMENT '微信unionid'
	QqUnionid       string     `json:"-"`                 //varchar(255) DEFAULT NULL COMMENT 'QQ unionid'
	OnlineStatus    int        `json:"online_status"`     //int(1) DEFAULT '9' COMMENT '1-在线 2-进入后台（离开）3-通话中 9-离线'
	Avatar          string     `json:"avatar"`            //varchar(255) DEFAULT NULL COMMENT '头像地址'
	Gold            int        `json:"gold"`              //int(10) DEFAULT '0' COMMENT '金币数量'
	Diamond         int        `json:"diamond"`           //int(10) DEFAULT '0' COMMENT '钻石数量'
	DiamondTotal    int        `json:"diamond_total"`     //int(10) DEFAULT '0' COMMENT '累计钻石数量'
	Tags            int        `json:"tags"`              //varchar(255) DEFAULT NULL COMMENT '标签数组'
	Point           int        `json:"point"`             //int(10) DEFAULT '0' COMMENT '经验值'
	AnchorPoint     int        `json:"anchor_point"`      //int(10) DEFAULT '0' COMMENT '主播经验值'
	IsAnchor        int        `json:"is_anchor"`         //int(1) DEFAULT '0' COMMENT '是否主播 1-是'
	Status          int        `json:"status"`            //int(1) DEFAULT '0' COMMENT '0-正常 1封禁'
	SharingRatio    int        `json:"sharing_ratio"`     //int(3) DEFAULT '40' COMMENT '分成比例 %'
	GuildId         int        `json:"guild_id"`          //int(10) DEFAULT '0' COMMENT '所属公会id'
	Agentid         int        `json:"agentid"`           //int(10) DEFAULT '0' COMMENT '上级代理id'
	GuildManagerId  int        `json:"guild_manager_id"`  //int(10) DEFAULT '0' COMMENT '经纪人id'
	RecWeight       int        `json:"rec_weight"`        //int(10) DEFAULT '0' COMMENT '推广权重0-100'
	CallReciveCount int        `json:"call_recive_count"` //int(10) DEFAULT '0' COMMENT '收到通话请求次数'
	CallAcceptCount int        `json:"call_accept_count"` //int(10) DEFAULT '0' COMMENT '接受通话请求次数'
	AuthTime        *time.Time `json:"auth_time"`         //datetime DEFAULT NULL COMMENT '完成实名认证时间'
	RegistTime      time.Time  `json:"regist_time"`       //datetime DEFAULT NULL,
	RegistIp        string     `json:"regist_ip"`
	RegistType      int        `json:"regist_type"`    //int(2) DEFAULT NULL COMMENT '注册来源 0 后台 1 WEB 2 IOS 3 Android.'
	LastLogin       time.Time  `json:"last_login"`     //datetime DEFAULT NULL,
	LastOnline      *time.Time `json:"last_online"`    //datetime DEFAULT NULL COMMENT '上次在线时间'
	LoginPlatform   int        `json:"login_platform"` //int(1) DEFAULT '0' COMMENT '0-Web 1-iOS 2-Android'
	PayPassword     string     `json:"pay_password"`   //varchar(255) DEFAULT NULL COMMENT '支付密碼',
	LastIp          string     `json:"last_ip"`
	ProfitDiamond   int        `json:"profit_diamond"` //int(10) DEFAULT '0' COMMENT '直播得金珂拉'
	ReadTime        time.Time  `json:"read_time"`      //最后一次阅读系统消息的时间

	DeviceInfo     string `json:"device_info"`     //设备信息
	RegSourceId    string `json:"reg_source_id"`   //注册来源
	LoginSourceId  string `json:"login_source_id"` //注册来源
	AnchorType     int
	BannedNum      int       //累计几次输错密码，或者几次被主播禁，登陆成功后清0
	BlockUntilTime time.Time `json:"block_until_time"` //禁止登陆到啥时候
	IsGuessHost    uint8     `json:"is_guess_host"`    //可以发起竞猜

	DeactiveTime time.Time `json:"deactive_time"` //被注销的时间
	ReceiveVip   uint8     `json:"receive_vip"`   //是否领取过VIP，0否1是

	NickNameTime int64  `json:"nick_name_time"` //上次改名时间戳
	Advertising  string `json:"advertising"`    //广告词
	//私聊
	ChatAdminIds string `gorm:"chat_admin_ids" json:"chat_admin_ids"` //主播列表 私聊管理员id, `,`分割

	// 主播简介
	Intro      string `json:"intro"`
	Banner     string `json:"banner"`
	ReplayShow int32  `json:"replay_show"`
}

func (User) TableName() string {
	return fmt.Sprintf("%suser", models.Prefix)
}

type PartUser struct {
	Id          int        `json:"id" gorm:"primaryKey;autoIncrement"`
	NickName    string     `json:"nick_name"`
	UserLevel   int        `json:"user_level"`   //int(10) DEFAULT '1' COMMENT '用户等级 默认1级'
	Avatar      string     `json:"avatar"`       //varchar(255) DEFAULT NULL COMMENT '头像地址'
	IsAnchor    int        `json:"is_anchor"`    //int(1) DEFAULT '0' COMMENT '是否主播 1-是'
	VipDate     *time.Time `json:"vip_date"`     //datetime DEFAULT NULL COMMENT 'vip到期日'
	VipLevel    int        `json:"vip_level"`    //int(11) DEFAULT '0' COMMENT 'vip等级'
	AnchorLevel int        `json:"anchor_level"` //int(10) DEFAULT '1' COMMENT '主播等级 默认3级'
	Point       int64      `json:"point"`
}

func (PartUser) TableName() string {
	return fmt.Sprintf("%suser", models.Prefix)
}

/******sql******
CREATE TABLE `db_user_binding_6taccount` (
  `uid` int NOT NULL,
  `account` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '绑定的6T账号',
  `status` int NOT NULL DEFAULT '0' COMMENT '绑定的状态 0：绑定成功未确认（没有充值记录） 1：绑定成功已确认（有充值记录）',
  `create_time` datetime DEFAULT NULL COMMENT '添加时间',
  `first_check_time` datetime DEFAULT NULL COMMENT '绑定成功确认时间',
  `deleted` int DEFAULT NULL COMMENT '0：绑定  1：解绑',
  PRIMARY KEY (`uid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='用户绑定6t账号表'
******sql******/
// DbUserBinding6taccount 用户绑定6t账号表
type DbUserBinding6taccount struct {
	UID            int       `gorm:"primaryKey;column:uid;type:int;not null" json:"uid"`
	Account        string    `gorm:"column:account;type:varchar(100);default:null;comment:'绑定的6T账号'" json:"account"`                             // 绑定的6T账号
	Status         int       `gorm:"column:status;type:int;not null;default:0;comment:'绑定的状态 0：绑定成功未确认（没有充值记录） 1：绑定成功已确认（有充值记录）'" json:"status"` // 绑定的状态 0：绑定成功未确认（没有充值记录） 1：绑定成功已确认（有充值记录）
	CreateTime     time.Time `gorm:"column:create_time;type:datetime;default:null;comment:'添加时间'" json:"createTime"`                             // 添加时间
	FirstCheckTime time.Time `gorm:"column:first_check_time;type:datetime;default:null;comment:'绑定成功确认时间'" json:"firstCheckTime"`                // 绑定成功确认时间
	Deleted        int       `gorm:"column:deleted;type:int;default:null;comment:'0：绑定  1：解绑'" json:"deleted"`                                   // 0：绑定  1：解绑
}

// TableName get sql table name.获取数据库表名
func (m *DbUserBinding6taccount) TableName() string {
	return "db_user_binding_6taccount"
}
